home *** CD-ROM | disk | FTP | other *** search
- /***********************************************************************
- STRUCTURE D'UN FICHIER *.EBS : Fichier contenant une scène pour EB_EDPOV
- BARANGER Emmanuel 12/12/1994
- ***********************************************************************/
- /* Remarque importante
- Toutes les valeurs qui, dans P.O.V., sont comprises entre 0.0 et 1.0 sont
- ici codées sur un octet. Il faut donc faire les conversions nécessaires.
- (0.0 à 1.0 devient 0 à 255)
- */
- /***********************************************
- Définition des termes utilisés :
-
- CHAR 8 bits non signés (Caractères)
- BYTE 8 Bits non signés
- INT 16 Bits signés
- UINT 16 Bits non signés
- LONG 32 Bits signés
- ULONG 32 Bit non signés
-
- ***********************************************/
-
- /* Structure générale */
-
- typedef struct
- {
-
- CHAR[4] EBPa
- OBJET 0 \ Le nombre d'objet étant définit avant
- ... \ la définition des zones de mémoire, il
- ... / et possible d'avoir un nombre d'objets
- OBJET N-1 / différent d'un fichier à l'autre.
- INT Camera_X
- INT Camera_Y
- INT Camera_Z
- INT Vers_X
- INT Vers_Y
- INT Vers_z
- SOURCE /* Numéro 0 */
- SOURCE /* 1 */
- SOURCE /* 2 */
- SOURCE /* 3 */
- SOURCE /* 4 */
- SOURCE /* 5 */
- SOURCE /* 6 */
- SOURCE /* 7 */
- SOURCE /* 8 */
- SOURCE /* 9 */
- BYTE Brouillard_Fond /* Bit 0 à 1 : Brouillard définit
- /* Bit 1 à 1 : Background définit
- DEF_CO /* Définition de la couleur du brouillard
- INT Distance
- DEF_CO
- } TOTAL;
-
- /* Structure DEF_CO. Définition des composantes de couleurs */
-
- typedef struct
- {
- INT Numero_couleur
- BYTE Teinte
- BYTE Luminosite
- BYTE Saturation
- } DEF_CO;
-
- /* Structure DEF_COT. Définition des composantes de couleurs
- plus la transparence */
-
- typedef struct
- {
- INT TNumero_couleur
- BYTE TTeinte
- BYTE TLuminosite
- BYTE TSaturation
- BYTE TTransparence
- } DEF_COT;
-
- /* Structure SOURCE. Définition d'une source de lumière */
-
- typedef struct
- {
- BYTE Flags
- INT Source_X
- INT Source_Y
- INT Source_Z
- BYTE Teinte_source
- BYTE Luminosite_source
- BYTE Saturation_source
- INT Svers_X
- INT Svers_Y
- INT Svers_Z
- INT Objet_lie
- } SOURCE;
-
- /* Structure OBJET. Définition d'un objet */
-
- typedef struct
- {
- INT Numero_Primitive
- INT Position_X
- INT Position_Y
- INT Position_Z
- INT Largeur
- INT Hauteur
- INT Profondeur
- INT Couleur_Objet
- CHAR Nom_Objet[23]
- INT Relation_CSG
- TEXTURE
- } OBJET;
-
- /* Information sur les valeurs de "Numero_Primitive"
- 0 : Segment
- 1 : Boite
- 2 : Sphère
- 3 : Prisme
- 4 : Cône
- 5 : Tronc de cône
- 6 : Hémisphère
- 7 : Tube
- 8 : Disque
- 9 : Pyramide
- 10 : Colonne
- 11 : Plan
- 12 : Tor
-
- Si Numero_Primitive>12 alors vérifier les bits 11 à 14.
- Si bit 11 à 1 : Height_field
- bit 12 à 1 : Extruder
- bit 13 à 1 : tourner
- bit 14 à 1 : Bicubic_patch
- tout à 0 : Objet importer.
- */
-
- /* Structure TEXTURE. Définition de la texture d'un objet. */
-
- typedef struct
- {
- INT Texture_Numero
- ECHELLE
- PIGMENT /* Partie "pigment" */
- NORMAL /* Partie "normal" */
- FINISH /* Partie "finish" */
- } TEXTURE;
-
- /* Structure ECHELLE. Définition des "scales" d'une textures */
-
- typedef struct
- {
- INT Echelle_X
- INT Echelle_Y
- INT Echelle_Z
- } ECHELLE;
-
- /* Structure PIGMENT. Définition de la partie "pigment" d'une texture */
-
- typedef
- {
- BYTE Motifs_p
- BYTE Aspect_p
- BYTE Divers_p
- BYTE Autres_p
- BYTE Gradient
- BYTE Turbulence_x_p
- BYTE Turbulence_Y_p
- BYTE Turbulence_Z_p
- ECHELLE /* valeurs de translate */
- ECHELLE /* valeurs de rotate */
- ECHELLE /* valeurs de scale */
- BYTE Valeur_Octaves
- BYTE Valeur_Lambda
- BYTE Valeur_Omega
- BYTE Valeur_Frequency_p
- BYTE Valeur_Phase_p
- BYTE Valeur_Agate_turbulence
- DEF_COLT /* Définition de la couleur */
- DEF_COLT /* Couleur 1 du premier color_map */
- DEF_COLT /* Couleur 2 du premier color_map */
- DEF_COLT /* Couleur 3 du premier color_map */
- DEF_COLT /* Couleur 4 du premier color_map */
- DEF_COLT /* Couleur 5 du premier color_map */
- DEF_COLT /* Couleur 6 du premier color_map */
- BYTE Premier_pourcentage_color_map_1
- BYTE Premier_pourcentage_color_map_2
- BYTE Premier_pourcentage_color_map_3
- BYTE Premier_pourcentage_color_map_4
- BYTE Premier_pourcentage_color_map_5
- BYTE Premier_pourcentage_color_map_6
- BYTE Deuxième_pourcentage_color_map_1
- BYTE Deuxième_pourcentage_color_map_2
- BYTE Deuxième_pourcentage_color_map_3
- BYTE Deuxième_pourcentage_color_map_4
- BYTE Deuxième_pourcentage_color_map_5
- BYTE Deuxième_pourcentage_color_map_6
- DEF_COLT /* Couleur 1 du checker_color */
- DEF_COLT /* Couleur 2 du checker_color */
- DEF_COLT /* Couleur 1 de l'hexagon_color */
- DEF_COLT /* Couleur 2 de l'hexagon_color */
- DEF_COLT /* Couleur 3 de l'hexagon_color */
- DEF_COLT /* Couleur 1 du deuxième color_map */
- DEF_COLT /* Couleur 2 du deuxième color_map */
- DEF_COLT /* Couleur 3 du deuxième color_map */
- DEF_COLT /* Couleur 4 du deuxième color_map */
- DEF_COLT /* Couleur 5 du deuxième color_map */
- DEF_COLT /* Couleur 6 du deuxième color_map */
- CHAR Nom_image_map[8] /* Nom de l'image mappée */
- } PIGMENT;
-
- /* Explications :
- Motifs_p : Bit ON/OFF
- bit 0 : Marble
- bit 1 : Wood
- bit 2 : Onion
- bit 3 : Leopard
- bit 4 : Granite
- bit 5 : Bozo
- bit 6 : Spotted
- bit 7 : Agate
- Aspects_p : Bit ON/OFF
- bit 0 : Gradient
- bit 1 : Turbulence
- bit 2 : Octaves
- bit 3 : Lambda
- bit 4 : Omega
- bit 5 : Frequency
- bit 6 : Phase
- bit 7 : Color_map
- Divers_p : Bit ON/OFF
- bit 0 : Image_map
- bit 1 : Checker
- bit 2 : Hexagon
- bit 3 : Color
- bit 4 : Ombre
- bit 5 : Invisible Se bit ne sert pas dans les textures.
- il est la pour indiquer à EB_EDPOV
- si un objet doit ou non être affiché.
- bit 7 et 6 : Type d'image_map
- 00 : GIF
- 01 : TGA
- 10 : IFF
- 11 : DIS
- Autres_p : Bit ON/OFF
- bit 0 : Translate
- bit 1 : Rotate
- bit 2 : Scale
- bit 3 : Once
- bit 4 : Interpolate (0=2, 1=4)
- bit 5 : Vide pour le moment
- bit 7 et 6 : Type de mapping
- 00 : Plan
- 01 : Sphère
- 10 : Cylindre
- 11 : Tor
- Gradient : Bit 0 à 5 : vide pour le moment
- bit 7 et 6 : Type de gradient
- 00 : sur X
- 01 : sur Y
- 02 : sur Z
- */
-
- /* Structure NORMAL. Définition de la partie "normal" d'une texture. */
-
- typedef struct
- {
- BYTE Motifs_n
- BYTE Autres_n
- BYTE Divers_n
- BYTE Valeur_dump
- BYTE Valeur_dent
- BYTE Valeur_ripples
- BYTE Valeur_Waves
- BYTE Valeur_Wrinkles
- BYTE Turbulence_x_n
- BYTE Turbulence_Y_n
- BYTE Turbulence_Z_n
- BYTE Valeur_frequency_n
- BYTE Valeur_phase_n
- ECHELLE /* valeurs de translate */
- ECHELLE /* valeurs de rotate */
- ECHELLE /* valeurs de scale */
- CHAR Nom_bump_map[8] /* Nom de l'image bumppée */
- } NORMAL;
-
- /* Explications :
- Motifs_n : Bit ON/OFF
- bit 0 : Bump
- bit 1 : Dents
- bit 2 : Ripples
- bit 3 : Waves
- bit 4 : Wrinkles
- bit 5 : Turbulence
- bit 6 : Frequency
- bit 7 : Phase
- Autres_p : Bit ON/OFF
- bit 0 : Translate
- bit 1 : Rotate
- bit 2 : Scale
- bit 3 : Once
- bit 4 : Interpolate (0=2, 1=4)
- bit 5 : Bump_map
- bit 7 et 6 : Type de bump_map
- 00 : GIF
- 01 : TGA
- 10 : IFF
- 11 : DIS
- Divers_p : Bit 0 à 5 vide pour le moment
- bit 7 et 6 : Type de mapping
- 00 : Plan
- 01 : Sphère
- 10 : Cylindre
- 11 : Tor
-
- */
-
- /* Structure FINISH. Définition de la partie "finish" d'une texture.
-
- typedef struct
- {
- BYTE Motifs_f
- BYTE Autres_f
- BYTE Divers_f
- BYTE Valeur_IOR
- BYTE Valeur_diffuse
- BYTE Valeur_reflection
- BYTE Valeur_brilliance
- BYTE Valeur_crand
- BYTE Valeur_ambient
- BYTE Valeur_specular
- BYTE Valeur_roughness
- BYTE Valeur_phong
- BYTE Valeur_phong_size
- } FINISH;
-
- /* Explications :
- Motifs_f : Bit ON/OFF
- bit 0 : Diffuse
- bit 1 : Reflection
- bit 2 : Brilliance
- bit 3 : Crand
- bit 4 : Ambient
- bit 5 : Specular
- bit 6 : Roughness
- bit 7 : Phong
- Autres_f : Bit ON/OFF
- bit 0 : Refraction
- bit 1 : Mettalic
- bit 2 et 4 : Sens du mapping dans partie "pigment"
- 000 : Dessous
- 001 : Dessus
- 010 : Gauche
- 011 : Droite
- 100 : Devant
- 101 : Derrière
- bit 5 à 7 : vide pour le moment
- Divers_f : lire la valeur :
-
- 0 : Rien
- 100 : Air
- 133 : Eau
- 150 : Verre
- 240 : Diamant
- Autre : Valeur libre
- */
-